# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：6.03 对象的初始化.py
# 开发时间：2021/3/25 21:17

# 实例对象的初始化，类似java中要用构造函数初始化
# 当执行person = Person()创建实例对象时，程序共进行了以下步骤：
# 1.在内存中创建一个变量person
# 2.在内存中创建一个新的type=MyClass的对象实例
# 3.执行__init__(self)方法
# 4.将对象的id赋值给变量person，让变量指向新对象

# 默认模板
# class ClassName(object):
#     """docstring for ClassName"""
#     # 在类中可以定义特殊方法，以__开头，以__结尾
#     # 不需要调用就会执行
#     def __init__(self, arg):
#         # 可以通过self向新建的对象初始化属性
#         super(ClassName, self).__init__()
#         self.arg = arg

# 创建Person的类
class Person:
    # 特殊方法
    def __init__(self, name, age, gender):
        # 公有属性
        self.name = name
        self.age = age
        self.gender = gender

    # 公有方法
    def say_hello(self, say):
        print(self.name, "向您say %s " % say)


# 对Person类而言，name都是必须的，且每个name不同
# 如果将name属性写死在类对象中，每个实例又会重复；而手动添加到实例对象中，很容易出错
# 现在，希望，创建对象时，必须传递name属性，否则无法创建实例对象（最好是属性的创建是自动完成的）
Mm = Person(name='MaverickMing', age='23', gender='male')
Mm.say_hello('好好学习！好好工作！')
